<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // [1,1,2,3,5,8,13]
        var a = [
                1, [
                1, 2, 3, 4, [{
                    b: [
                        1, 2, 3, 4, 5, 6, 7, 8, 9, 0, {
                            d: 1,
                            e: 2,
                            f: 8,
                            o: [
                                1, 2, 34, 5, 6, 7, 8, {
                                    a: "111",
                                    c: [1, 2, 3, 4, 5, 67, 8, {
                                        asd: {
                                            a: 1,
                                            m: 2
                                        }
                                    }]
                                }
                            ]
                        }
                    ]
                }]
            ]
        ];
        let list = [];
        todo(0)//入参为下标
        function todo(index){//list数组的index 下标
            if(index<2){
                list[index]=1;
                todo(index+1)
            }else{
                if(index<100){
                    list[index] = list[index-1]+list[index-2];
                    todo(index+1)
                }
            }
            // 递归必须要有个条件不在继续调自己
        }
        console.log(list)
        // 深拷贝中最完美的深拷贝只有一种就是递归拷贝
        // 递归拷贝 将数据中每一层数据进行拷贝 层层赋值拷贝
        // {} []
        // deepClone() 深拷贝方法
        function deepClone(obj){
            //判断当前入的参数是不是数组 如果是数组我们就声明一个空数组 如果不是数组我们就声明一个空对象
            // Array.isArray(数据)  => true(该数据是数组) || false（该数据不是数组）
            var objClone = Array.isArray(obj)?[]:{};
            // empty空属性
            // 防止数组中存在空属性
            if(obj && typeof(obj)=="object"){//typeof(obj)=="object"  obj []{}  防null或者是空属性 
            // b={a:1}  b[a]  b =[1,1] b[1]
               for(var key in obj){
                objClone[key] = deepClone(obj[key])
               }
            }else{
                // null 基本数据类型 empty
                objClone[key]=obj[key]
            }
            return objClone
        }
        let b = deepClone(a);
        
        b[0]=1000;
        console.log(b)
        console.log(a)
    </script>
</body>
</html>